home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.1 (Developer) [x86] / NeXT Step 3.1 Intel dev.cdr.dmg / NextDeveloper / Headers / btree / protocols.h < prev   
Encoding:
C/C++ Source or Header  |  1993-03-31  |  5.1 KB  |  164 lines

  1. /*
  2. protocols.h
  3. Copyright 1991,NeXT Computer,Inc.
  4. */
  5.  
  6. #import    <store/protocols.h>
  7.  
  8. typedef int 
  9. IXComparator(const void *data1, unsigned short length1, 
  10.     const void *data2, unsigned short length2, const void *context);
  11.  
  12. @protocol IXComparatorSetting
  13.  
  14. // context is arbitrary, caller supplied pointer passed to comparator.  
  15. // comparator is not saved across free/init.
  16.  
  17. - getComparator:(IXComparator **)comparator andContext:(const void **)context;
  18. - setComparator:(IXComparator *)comparator andContext:(const void *)context;
  19.  
  20. @end
  21.  
  22. @protocol IXComparisonSetting
  23.  
  24. // caller supplied comparator is cleared, and format string is installed
  25. // format string is not saved across free/init.
  26.  
  27. - (const char *)comparisonFormat;
  28. - setComparisonFormat:(const char *)aFormat;
  29.  
  30. @end
  31.  
  32. @protocol IXCursorPositioning
  33.  
  34. - (BOOL)setFirst; // positions cursor at first key in key space
  35. - (BOOL)setLast; // positions cursor at last key in key space
  36. - (BOOL)setNext; // positions cursor at next key in key space
  37. - (BOOL)setPrevious; // position cursor at previous key in key space
  38.  
  39. - (BOOL)getKey:(const void **)key // returns value of key at cursor
  40.     andLength:(unsigned *)length;
  41. - (BOOL)setKey:(const void *)key // positions cursor at supplied key
  42.     andLength:(unsigned)length;
  43.  
  44. - (BOOL)isMatch; // true if cursor matched a key on last operation
  45.  
  46. @end
  47.  
  48. // a weighted reference to something that can be described by a handle.
  49. // note that the weight is not interpreted, and may be any unsigned value, 
  50. // such as a hint or a another handle.
  51.  
  52. typedef struct IXPosting    {
  53.     unsigned            handle;
  54.     unsigned            weight;
  55. } IXPosting;
  56.  
  57. @protocol IXPostingExchange
  58.  
  59. // a copy of the receiver's postings is returned by get.  caller must free.
  60. // set does not consume the copy.
  61.  
  62. - getCount:(unsigned *)theCount andPostings:(IXPosting **)thePostings;
  63. - setCount:(unsigned)theCount andPostings:(const IXPosting *)thePostings;
  64.  
  65. @end
  66.  
  67. @protocol IXPostingOperations
  68.  
  69. - addHandle:(unsigned)handle withWeight:(unsigned)weight;
  70. - removeHandle:(unsigned)handle;
  71.  
  72. - empty;
  73. - (unsigned)count;
  74.  
  75. // for iterating over the handles.  zero is returned at end of list.
  76.  
  77. - (unsigned)setFirstHandle;
  78. - (unsigned)setNextHandle;
  79.  
  80. // sets to the supplied handle, or if not found, to the next larger handle
  81. - (unsigned)setHandle:(unsigned)handle;
  82. - (unsigned)getHandle:(unsigned *)handle andWeight:(unsigned *)weight;
  83.  
  84. @end
  85.  
  86. // default comparator routines for use with IXBTree.
  87.  
  88. extern int 
  89. IXFormatComparator(const void *data1, unsigned short length1, 
  90.     const void *data2, unsigned short length2, void *format);
  91.  
  92. extern int 
  93. IXCompareStrings(const void *data1, unsigned short length1, 
  94.     const void *data2, unsigned short length2, const void *context);
  95.  
  96. extern int 
  97. IXCompareMonocaseStrings(const void *data1, unsigned short length1, 
  98.     const void *data2, unsigned short length2, const void *context);
  99.  
  100. extern int 
  101. IXCompareBytes(const void *data1, unsigned short length1, 
  102.     const void *data2, unsigned short length2, const void *context);
  103.  
  104. extern int 
  105. IXCompareShort(const void *data1, unsigned short length1, 
  106.     const void *data2, unsigned short length2, const void *context);
  107.  
  108. extern int 
  109. IXCompareShorts(const void *data1, unsigned short length1, 
  110.     const void *data2, unsigned short length2, const void *context);
  111.  
  112. extern int 
  113. IXCompareLong(const void *data1, unsigned short length1, 
  114.     const void *data2, unsigned short length2, const void *context);
  115.  
  116. extern int 
  117. IXCompareLongs(const void *data1, unsigned short length1, 
  118.     const void *data2, unsigned short length2, const void *context);
  119.  
  120. extern int 
  121. IXCompareUnsignedBytes(const void *data1, unsigned short length1, 
  122.     const void *data2, unsigned short length2, const void *context);
  123.  
  124. extern int 
  125. IXCompareUnsignedShort(const void *data1, unsigned short length1, 
  126.     const void *data2, unsigned short length2, const void *context);
  127.  
  128. extern int 
  129. IXCompareUnsignedShorts(const void *data1, unsigned short length1, 
  130.     const void *data2, unsigned short length2, const void *context);
  131.  
  132. extern int 
  133. IXCompareUnsignedLong(const void *data1, unsigned short length1, 
  134.     const void *data2, unsigned short length2, const void *context);
  135.  
  136. extern int 
  137. IXCompareUnsignedLongs(const void *data1, unsigned short length1, 
  138.     const void *data2, unsigned short length2, const void *context);
  139.  
  140. extern int 
  141. IXCompareFloat(const void *data1, unsigned short length1, 
  142.     const void *data2, unsigned short length2, const void *context);
  143.  
  144. extern int 
  145. IXCompareFloats(const void *data1, unsigned short length1, 
  146.     const void *data2, unsigned short length2, const void *context);
  147.  
  148. extern int 
  149. IXCompareDouble(const void *data1, unsigned short length1, 
  150.     const void *data2, unsigned short length2, const void *context);
  151.  
  152. extern int 
  153. IXCompareDoubles(const void *data1, unsigned short length1, 
  154.     const void *data2, unsigned short length2, const void *context);
  155.  
  156. extern int 
  157. IXCompareStringAndUnsigneds(const void *data1, unsigned short length1, 
  158.     const void *data2, unsigned short length2, const void *context);
  159.  
  160. extern int 
  161. IXCompareUnsignedAndStrings(const void *data1, unsigned short length1, 
  162.     const void *data2, unsigned short length2, const void *context);
  163.  
  164.